Changes in 2.51
----------------
 Output buffering added. This isn't at all impressive, but seemed like an
  interesting and useful optimisation to have. Maybe it won't thrash the
  drive on Chris' machine, or maybe it will - I'll have to see.
 Output buffering on debug data added. As above this appears to make very
  little difference to the performance, but as I'm timing things using the
  seconds numbers on !Alarm I reserve the right to be wrong. For those of
  interest, the buffers are 8k for the main BasTxt file and 2k for the debug
  data. Since BasTxt files tend to be rather large I may up this some time
  soon.
 Bug fixes in 2.50's dictionary encoding code, and optimised encoding's now
  mean that entries including the token 0 will not fail to be compressed to
  their minimal form.
 Release to Chris Johns and Phil Norman. I don't actually know who else uses
  it... I wish people would contact me - if only to report bugs !


Changes in 2.50
----------------
 printf improved to include %d for cmj
 memcpy added (suboptimal but works!) (currently only on cmj's machine)
 Pre/PostFilter code handlers in AOF mode didn't work previously - now fixed
 WimpSWIs didn't work since about 2.46 where I tried optimising the code;
  both WimpSWIs and Filter code should be vaguely optimal
 SWIs block now allows for 'Pre' and 'Post' handler code - this should allow
  you to do things before we check the SWI number and after we return from the
  SWI call
 Extra info string has been added (for Module block) to allow you to describe
  a module more fully (eg, ARM3 variant, etc) on the help line.
 Syntax strings will now have the OS dictionary for RO3.1 substituted into
  them
 Looks like strings can have embedded variable expressions in them (I've no
  idea when I added this); things like Help blocks can have {<expr>} to
  indicate that the <expr> can be embedded - eg, This was compiled {TIME$}
  Just goes to show what you can learn when you read your own programs!


Changes in 2.49
----------------
 Added Phil Norman's divide routine to the 'Libraries' directory (at last!),
  as well as another Divide routine I got from 'jonboy' on IRC.
 Partial messages file support added ('jonboy')
 InsBranch library added; similar to Patch, but useful when you don't care
  what you've patched, or need to patch a branch table, etc... ('jonboy')
 Strings library updated to use 'nice-upper' code extracted from RiscOS :-)
 SWI out of range now uses MessageTrans rather than 'knowing' the error
  ('jonboy')
 Added 'printf' library for making debugging in C easier (yay!)
 Fixed and optimised a few string routines.


Changes in 2.48
----------------
 'Type AOFModule' is now depreciated; you should use 'Type AOF Module'
  instead; new syntax is 'Type AOF [<subtype> [<subtype>]...]' where
  <subtype> may be Module or Debug.
  The current implementation of Debug, whilst looking correct seems to
  crash ddt; I recommend that you avoid the debug option for the time being.
 Released to Chris Johns, Phil Norman and 'jonboy' (who I've forgotten the
  name of!)


Changes in 2.47
----------------
 REM storage space moved onto stack rather than inside code. This should
  allow you to /really/ say READONLY in AOF with REM's in them.
 WARNING: Do NOT use WimpSWI Post trap code prior to this version; pretrap
  code will be called instead !!!!
 In AOF, any exported label followed by the word ENTRY will be made the
  execution entry point for this file.


Changes in 2.46
----------------
 Minor bugs in AOF handling fixed
 Fixed bug with $$ - this now translates to $ correctly if macros are not in
  use


Changes in 2.45
----------------
 Arrgghh... fixed nasty bug in the WimpSWIve claim routines ;-(
  This should stop the table being included twice and r0 being corrupted
  randomly in the init code !
 Don't even think about using |'s around WimpSWIve stuff - it doesn't work,
  I've got to work out how to get the right addresses in there - atm it's
  using offsets for normal variables, and addresses for |'s - I need a
  consistant interface internally - I don't want conversions on the fly if I
  can help it ;-(
 CAS and RAS macros added. Don't expect anything special from them though.
 I think CodePrefix actually works now... Need to check this really though.
 TaskWindow error handling improved.
 Includes now work correctly (inline, rather than at end)


Changes in 2.44
----------------
 Multiple areas now supported correctly.
 AOFModule now allows |label| style labels for the most part - if there's one
  I've missed please tell me :-)
 Relocation of symbols where they are both exported and local now works if the
  first instance was a reference and not a definition.
 Filters /may/ not work on AOFModules. This is untested.
 WimpSWIs /do/ work with AOFModules.
 EQUD |routine| will store the /absolute/ address, not the relative one -
  ideas as to how to fiddle this are greatfully appreciated :-)
 strdup added to j.memory.
 astrcmp added - this is an assembler style string compare - it returns EQ,
 LT, GT, etc rather than -1,0,+1 as in C. There is no C header for this.
 Events, Services, Vectors, init, final & service have not been tested for use
  with AOF functions.
 Some re-organisation of the internals of the filters code means that it is no
  longer restricted to the 64k previously available - this takes one extra
  word and I'm not happy with it - I'd rather the use of that style of function
  was restricted to AOFModule only, then standard Module types could have the
  luxury of an extra instruction with the knowledge that they cannot exceed 64k
  of code (!)

Notes:
 Remember: strcpy copies from r1 to r0 NOT r0 to r1.
 Filters using Accept are unstable - be careful to check /explicitly/ for the
  reason you want. Unfortunately ToolBox passes ridiculously big reasons down
  to the application - it's difficult to mask reason 17 million if you've
  only got a 32 bit word to use :-(
 Am considering making the jfplib functions into a seperate area each - the
  overheads will be minimal and non-existant when linked, but /only/ the
  required routines will be linked and link can ditch those we don't want.


Changes in 2.43
----------------

 Added > macro command to embed function name before routine
 #CodePrefix <bool> will modify this variable.
 <bool> is now allowed to be =<file> which evaluates to TRUE if the file
  exists but is empty, and the boolean value of the contents of that file
  otherwise. The latter form is prefered.

 Matthew Godbolts main routine included in the jfplib library,
  SkipWhitespace and SkipNonWhitespace added to string.j, puts (writes a
  string), putnl (new line), updated headers.


Changes in 2.41
----------------

 Fixed bug in Event handler code (DON'T use workspace in events prior to this
  version :-( )
 Added LO and HS to the list of conditionals accepted.


Changes in 2.40 over 2.33
--------------------------

 Macros are slightly more stable - still not brilliant though.
 AOF compilation now possible - again, not brilliant, but it works !
 REM's now optimised; should cut quite a size off debugging code.
 Minor modifications to allow tabs - not complete but getting there.
 Error handling slightly improved - now allows errors returned using ABEX.
